package io.wins.vertx.service;

import io.vertx.core.Vertx;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.wins.vertx.entity.Concert;
import io.wins.vertx.entity.Tag;
import io.wins.vertx.service.impl.ConcertServiceImpl;

public interface ConcertService {
    String SERVICE_ADDRESS = "concert.service";

    static ConcertService create(final Vertx vertx) {
        return new ConcertServiceImpl(vertx);
    }

    ConcertService listAllConcert(final Message tMessage);

    ConcertService listConcertByPage(final int page, final int limit, final Message tMessage);

    ConcertService listTypeConcertByPage(final String typeId, final int page, final int limit, final Message tMessage);

    ConcertService getConcertById(final String id, final Message tMessage);

    ConcertService insertConcert(final Concert concert, final Message tMessage);

    ConcertService deleteConcert(final String id, final Message tMessage);

    ConcertService updateConcert(final Concert concert, final Message tMessage);

    ConcertService publish(String id, String status, Message<JsonObject> tMessage);

    ConcertService createTag(Tag tag, Message<JsonObject> tMessage);

    ConcertService listTags(Message<JsonObject> tMessage);

    ConcertService listTags(JsonArray codes, Message<JsonObject> tMessage);

    ConcertService getFaceValues(String pid, Message<JsonObject> tMessage);

    ConcertService getConcertTime(String pid, Message<JsonObject> tMessage);
}
